package com.bosssoft.goods.handle;

import com.bosssoft.goods.dao.GoodsCategoryDao;
import com.bosssoft.goods.domain.vo.AddCategoryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 商品分类添加处理类
 * @author Fang_Sir
 * @date 2021-04-13
 */
@Component
public class AddCategoryHandle {
    @Autowired
    private GoodsCategoryDao goodsCategoryDao;

    /**
     * 添加商品分类
     * @param vo 商品分类信息
     * @param uid 添加管理员编号
     * @return 成功返回 true
     */
    public boolean addGoodCategory(AddCategoryVO vo,int uid){
        switch (vo.getLevel()){
            case 0:
                return addRoot(vo.getName(), uid);
            case 1:
                return addFunction(vo.getPid(), vo.getName(), uid);
            case 2:
                return addType(vo.getPid(), vo.getName(), uid);
            default:
                return false;
        }
    }

    /**
     * 添加商品根分类
     * @param name 商品分类名称
     * @param uid 添加管理员编号
     * @return 成功返回 true
     */
    public boolean addRoot(String name,int uid) {
        if(goodsCategoryDao.isExistCategoryRoot(name) <= 0){
            return goodsCategoryDao.addCategoryRoot(name, uid) > 0;
        }
        return false;
    }

    /**
     * 添加商品二级（功能）分类
     * @param pid 商品分类父类编号
     * @param name 商品分类名称
     * @param uid 添加管理员编号
     * @return 成功返回 true
     */
    public boolean addFunction(int pid,String name,int uid) {
        if(goodsCategoryDao.isExistCategoryFunction(name) <= 0 &&
            goodsCategoryDao.isExistCategoryRootById(pid) > 0){
            return goodsCategoryDao.addCategoryFunction(pid,name, uid) > 0;
        }
        return false;
    }

    /**
     * 添加商品三级（类型）分类
     * * @param pid 商品分类父类编号
     * @param name 商品分类名称
     * @param uid 添加管理员编号
     * @return 成功返回 true
     */
    public boolean addType(int pid,String name,int uid) {
        if(goodsCategoryDao.isExistCategoryRoot(name) <= 0 &&
            goodsCategoryDao.isExistCategoryFunctionById(pid) > 0){
            return goodsCategoryDao.addCategoryType(pid,name, uid) > 0;
        }
        return false;
    }
}
